home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / mpfeel.lha / MPFeel / Modules / fib.em < prev    next >
Lisp/Scheme  |  1992-10-06  |  1KB  |  38 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                                           ;;
  3. ;;  EuLisp Module                     Copyright (C) University of Bath 1991  ;;
  4. ;;                                                                           ;;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. (defmodule fib 
  8.  
  9.   (standard0) ()
  10.  
  11.   ()
  12.  
  13.   (defun ffib (x) (if (< x 2) 1 (+ (ffib (- x 1)) (ffib (- x 2)))))
  14.  
  15.   (defun fib (x) 
  16.     (if (< x 2) 
  17.     1
  18.         (binary-plus (fib (binary-difference x 1)) 
  19.              (fib (binary-difference x 2)))))
  20.   
  21.   (defgeneric gfib (x)
  22.     methods ((((x integer))
  23.           (if (< x 2) 1 
  24.         (+ (gfib (- x 1))
  25.            (gfib (- x 2)))))))
  26.     
  27.             
  28.   ;; Employ the methods directly (horrible n'est pas)
  29.   (defun rfib (x) 
  30.     (if (generic_binary_lt\,Integer\,Integer x 2)
  31.     1
  32.       (generic_binary_plus\,Integer\,Integer 
  33.        (rfib (generic_binary_difference\,Integer\,Integer x 1))
  34.        (rfib (generic_binary_difference\,Integer\,Integer x 2)))))
  35.        
  36.  
  37. )
  38.